from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
import os
import sys

# 创建数据库实例
db = SQLAlchemy()
migrate = Migrate()

def create_app():
    app = Flask(__name__)

    # 获取运行路径（这部分通常用于打包应用，如使用 PyInstaller）
    if getattr(sys, 'frozen', False):
        base_path = sys._MEIPASS  # 打包后临时目录
    else:
        base_path = os.path.dirname(os.path.abspath(__file__))

    # 设置模板和静态文件目录（这些设置通常是默认的，除非你想自定义它们）
    # app.template_folder = os.path.join(base_path, 'templates')  # 默认就是 'templates'
    # app.static_folder = os.path.join(base_path, 'static')      # 默认就是 'static'

    # 加载配置文件
    app.config.from_object('app.config.Config')  # 确保这里路径正确

    # 清除 Jinja2 模板缓存（通常不需要这样做，除非你有特定的缓存问题）
    # app.jinja_env.cache = {}

    # 初始化数据库和迁移
    db.init_app(app)
    migrate.init_app(app, db)  # 初始化迁移工具

    # 注册蓝图路由（确保 app/routes.py 存在且 bp 是一个有效的蓝图对象）
    from app.routes import bp  # 假设路由在 app/routes.py 中定义
    app.register_blueprint(bp)

    return app